const http = require('http');
const Koa = require('koa');
// 导入工具模块
const utils=require('./utils');

// 引入静态资源中间件
const static = require('koa-static');
// 引入bodyparser中间件
const bodyParser = require('koa-bodyparser');
const path = require('path');
// 导入koa-views
const views = require('koa-views');

// 导入路由模块
const router = require('./router.js');
// 创建服务
const app = new Koa();

// 设置模板引擎(必须在注册路由之前设置模板引擎)
app.use(views(path.join(__dirname, './views'), {
    // extension: 'ejs',            // 模板后缀名必须为.ejs
    map: {
        html: 'ejs'                 // 模板后缀名必须为.html
    }
}))
// 注册路由
app.use(router.routes());
// 注册bodyParser中间件
app.use(bodyParser());
// 托管静态资源
app.use(static(path.join(__dirname, './static')));

// 应用级中间件
// io(端口号)会创建一个http服务
var io = require('socket.io')(80);
// 监听链接是否建立成功
io.on('connection', function (socket) {
    // 监听客户端消息
    socket.on('message', function (msg) {
        // 调用语义识别接口
        utils.chatRobot(msg,(data)=>{
            // 通过自定义事件, 发送消息给客户端
            socket.emit('content', { msg:`${data.content}`});
        });
    });
    socket.on('disconnect', function () {
        socket.emit('user disconnected');
    });
});
// app.listen(3000, () => {
//     console.log('server running at http://localhost:3000');
// });
http.createServer(app.callback()).listen(3000, function () {
    console.log('server runnig at http://localhost:3000');
});